<?php

/**
 * 实现SAE的Memcache类哦
 *
 * @author https://gitee.com/foglede
 */
class Memcache {

    function getServerStatus() {
        return '放心，mahuohuo的SAE仿真环境会十分稳定的哦！';
    }

    /**
     *
     * @param string $key
     * @param mixed $var
     * @param int $flag
     * @param int $expire 
     * @return bool
     */
    function add($key, $var, $flag=null, $expire=null) {
        return wincache_ucache_add($key,$var,$expire);
    }

    /**
     * @return bool
     */
    function close() {
        return TRUE;
    }

    /*   
       * @param string
     * @param int
     * @return int
     */
    function decrement( $key,  $value = 1) {
        return wincache_ucache_dec($key,$value);
    }

    /**
     * @param string
     * @param int
     * @return bool
     */
    function delete($key, $timeout=0) {
        return wincache_ucache_delete($key);
    }

    /**
     * @return bool
     */
    function flush() {
        return wincache_ucache_clear();
    }

    /**
     * 欠考虑
     * @param string
     * @param int
     * @return String
     * 
     */
    function get($key, &$flags = 0) {
       return wincache_ucache_get($key);
    }

    function getVersion() {
        return 'mahuohuo SAE Memcache模拟版本0.1！';
    }

    /**
     *
     * @param string $key
     * @param int $value 
     */
    function increment($key, $value = 1) {
        return wincache_ucache_inc($key,$value);
    }

    /**
     *
     * @param string $key
     * @param mixed $var
     * @param int $flag
     * @param int $expire 
     * @return bool
     */
    function replace($key, $var, $flag, $expire=0) {
        if(wincache_ucache_exists($key)){
            return wincache_ucache_set($key, $var,$expire);
        }  else {
            return FALSE;
        }
    }

    /**
     *
     * @param string $key
     * @param mixed $var
     * @param int $flag
     * @param int $expire 
     * @return bool
     */
    function set($key, $var, $flag, $expire=0) {
        return wincache_ucache_set($key, $var,$expire);
    }

    function getStats() {
        return wincache_fcache_meminfo() + func_get_args();
    }

    /**
     *
     * @param int $threshold
     * @param float $min_savings
     * @return bool 
     */
    function setCompressThreshold($threshold, $min_savings) {
        return TRUE;
    }
}

function memcache_init() {
    return new Memcache();
}

function memcache_add($obj,$key, $var, $flag=null, $expire=null){
    if(!($obj instanceof Memcache)){return FALSE;}
    return $obj->add($key, $var, $flag, $expire);
}

function memcache_close($obj){
    return $obj instanceof Memcache;
}

function memcache_decrement($obj,$value){
    if(!($obj instanceof Memcache)){return FALSE;}
    return $obj->decrement($key, $value=1);
}
function memcache_delete($obj,$key, $timeout=0){
   if(!($obj instanceof Memcache)){return FALSE;} 
   return $obj->delete($key, $timeout);
}
function memcache_flush($obj){
    if(!($obj instanceof Memcache)){return FALSE;} 
    return $obj->flush();
}
function memcache_get($obj,$key, $flags){
    if(!($obj instanceof Memcache)){return FALSE;} 
    return $obj->get($key, $flags);
}
function memcache_increment($obj,$key, $value=1){
    if(!($obj instanceof Memcache)){return FALSE;} 
    return $obj->increment($key, $value=1);
}
function memcache_replace($obj,$var, $flag, $expire) {
    if(!($obj instanceof Memcache)){return FALSE;} 
    return $obj->replace($key, $var, $flag, $expire);
}
function memcache_set($obj,$key, $var, $flag, $expire){
    if(!($obj instanceof Memcache)){return FALSE;} 
    return $obj->set($key, $var, $flag, $expire);
}

?>
